<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::MarchingCubes&lt; PointNT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_marching_cubes.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="classpcl_1_1_marching_cubes-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::MarchingCubes&lt; PointNT &gt; 模板类 参考<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>The marching cubes surface reconstruction algorithm. This is an abstract class that takes a grid and extracts the isosurface as a mesh, based on the original marching cubes paper:  
 <a href="classpcl_1_1_marching_cubes.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="surface_2include_2pcl_2surface_2marching__cubes_8h_source.html">marching_cubes.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::MarchingCubes&lt; PointNT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_marching_cubes.png" usemap="#pcl::MarchingCubes_3C_20PointNT_20_3E_map" alt=""/>
  <map id="pcl::MarchingCubes_3C_20PointNT_20_3E_map" name="pcl::MarchingCubes_3C_20PointNT_20_3E_map">
<area href="classpcl_1_1_surface_reconstruction.html" alt="pcl::SurfaceReconstruction&lt; PointNT &gt;" shape="rect" coords="121,112,353,136"/>
<area href="classpcl_1_1_p_c_l_surface_base.html" title="Pure abstract class. All types of meshing/reconstruction algorithms in libpcl_surface must inherit fr..." alt="pcl::PCLSurfaceBase&lt; PointInT &gt;" shape="rect" coords="121,56,353,80"/>
<area href="classpcl_1_1_p_c_l_base.html" alt="pcl::PCLBase&lt; PointInT &gt;" shape="rect" coords="121,0,353,24"/>
<area href="classpcl_1_1_marching_cubes_hoppe.html" title="The marching cubes surface reconstruction algorithm, using a signed distance function based on the di..." alt="pcl::MarchingCubesHoppe&lt; PointNT &gt;" shape="rect" coords="0,224,232,248"/>
<area href="classpcl_1_1_marching_cubes_r_b_f.html" title="The marching cubes surface reconstruction algorithm, using a signed distance function based on radial..." alt="pcl::MarchingCubesRBF&lt; PointNT &gt;" shape="rect" coords="242,224,474,248"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:adfc0b1840bc00f7302926fe41af332cb"><td class="memItemLeft" align="right" valign="top"><a id="adfc0b1840bc00f7302926fe41af332cb"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_marching_cubes.html">MarchingCubes</a>&lt; PointNT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:adfc0b1840bc00f7302926fe41af332cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20d20bc7c406d7027eec36b5e1e58365"><td class="memItemLeft" align="right" valign="top"><a id="a20d20bc7c406d7027eec36b5e1e58365"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_marching_cubes.html">MarchingCubes</a>&lt; PointNT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a20d20bc7c406d7027eec36b5e1e58365"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7b1f1accd8024a7bf04282df267717a"><td class="memItemLeft" align="right" valign="top"><a id="ab7b1f1accd8024a7bf04282df267717a"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointNT &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:ab7b1f1accd8024a7bf04282df267717a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c54b992e0df0382e6780a672b9e3795"><td class="memItemLeft" align="right" valign="top"><a id="a4c54b992e0df0382e6780a672b9e3795"></a>
typedef <a class="el" href="classpcl_1_1_kd_tree.html">pcl::KdTree</a>&lt; PointNT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTree</b></td></tr>
<tr class="separator:a4c54b992e0df0382e6780a672b9e3795"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec5f4bc77de7c7fd25908c109d8672a7"><td class="memItemLeft" align="right" valign="top"><a id="aec5f4bc77de7c7fd25908c109d8672a7"></a>
typedef <a class="el" href="classpcl_1_1_kd_tree.html">pcl::KdTree</a>&lt; PointNT &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreePtr</b></td></tr>
<tr class="separator:aec5f4bc77de7c7fd25908c109d8672a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_surface_reconstruction"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_surface_reconstruction')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_surface_reconstruction.html">pcl::SurfaceReconstruction&lt; PointNT &gt;</a></td></tr>
<tr class="memitem:a82a72c302749a05be8374d7e5c3edd2b inherit pub_types_classpcl_1_1_surface_reconstruction"><td class="memItemLeft" align="right" valign="top"><a id="a82a72c302749a05be8374d7e5c3edd2b"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_surface_reconstruction.html">SurfaceReconstruction</a>&lt; PointNT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a82a72c302749a05be8374d7e5c3edd2b inherit pub_types_classpcl_1_1_surface_reconstruction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a346e458609b16ee003bd96881dbc8c8c inherit pub_types_classpcl_1_1_surface_reconstruction"><td class="memItemLeft" align="right" valign="top"><a id="a346e458609b16ee003bd96881dbc8c8c"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_surface_reconstruction.html">SurfaceReconstruction</a>&lt; PointNT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a346e458609b16ee003bd96881dbc8c8c inherit pub_types_classpcl_1_1_surface_reconstruction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_surface_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_surface_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_surface_base.html">pcl::PCLSurfaceBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:a2f84799184d18b1a1cd975b1150141be inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a2f84799184d18b1a1cd975b1150141be"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_p_c_l_surface_base.html">PCLSurfaceBase</a>&lt; PointInT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a2f84799184d18b1a1cd975b1150141be inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36f91263ab6849f650394555962009b9 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a36f91263ab6849f650394555962009b9"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_p_c_l_surface_base.html">PCLSurfaceBase</a>&lt; PointInT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a36f91263ab6849f650394555962009b9 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af69dc51274aeb35ad9d2f5a7c2bc9b13 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="af69dc51274aeb35ad9d2f5a7c2bc9b13"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; PointInT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTree</b></td></tr>
<tr class="separator:af69dc51274aeb35ad9d2f5a7c2bc9b13 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d522cbb4c45e2d477244fffd4b6e224 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a5d522cbb4c45e2d477244fffd4b6e224"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; PointInT &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreePtr</b></td></tr>
<tr class="separator:a5d522cbb4c45e2d477244fffd4b6e224 inherit pub_types_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae2f6f6863a73337858b7a7a054eaae4f"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointInT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ab84dd662cda89edb882fe5307b2136ea"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ac8326513fad0680b6993e2f1a79a6af4"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae51eae0c7b3e0b7178f4894dff90660a"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a51771056fb4ab8c448a11157acbe2ee0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> const &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a643538b2ba01617f8d93ca6852182529"><td class="memItemLeft" align="right" valign="top"><a id="a643538b2ba01617f8d93ca6852182529"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a643538b2ba01617f8d93ca6852182529">MarchingCubes</a> ()</td></tr>
<tr class="memdesc:a643538b2ba01617f8d93ca6852182529"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:a643538b2ba01617f8d93ca6852182529"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdfe5735007c26f7395baf477fab59b7"><td class="memItemLeft" align="right" valign="top"><a id="afdfe5735007c26f7395baf477fab59b7"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#afdfe5735007c26f7395baf477fab59b7">~MarchingCubes</a> ()</td></tr>
<tr class="memdesc:afdfe5735007c26f7395baf477fab59b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:afdfe5735007c26f7395baf477fab59b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64dba57c71a3c123f7d6038d0fdfa4eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a64dba57c71a3c123f7d6038d0fdfa4eb">setIsoLevel</a> (float iso_level)</td></tr>
<tr class="memdesc:a64dba57c71a3c123f7d6038d0fdfa4eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method that sets the iso level of the surface to be extracted.  <a href="classpcl_1_1_marching_cubes.html#a64dba57c71a3c123f7d6038d0fdfa4eb">更多...</a><br /></td></tr>
<tr class="separator:a64dba57c71a3c123f7d6038d0fdfa4eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9d9ebf25d347e3c4f209be645b52c21"><td class="memItemLeft" align="right" valign="top"><a id="aa9d9ebf25d347e3c4f209be645b52c21"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#aa9d9ebf25d347e3c4f209be645b52c21">getIsoLevel</a> ()</td></tr>
<tr class="memdesc:aa9d9ebf25d347e3c4f209be645b52c21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method that returns the iso level of the surface to be extracted. <br /></td></tr>
<tr class="separator:aa9d9ebf25d347e3c4f209be645b52c21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa525f9b2f018d8b0011c943eefb9dcee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#aa525f9b2f018d8b0011c943eefb9dcee">setGridResolution</a> (int res_x, int res_y, int res_z)</td></tr>
<tr class="memdesc:aa525f9b2f018d8b0011c943eefb9dcee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method that sets the marching cubes grid resolution.  <a href="classpcl_1_1_marching_cubes.html#aa525f9b2f018d8b0011c943eefb9dcee">更多...</a><br /></td></tr>
<tr class="separator:aa525f9b2f018d8b0011c943eefb9dcee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea042206805d3f6a03bfbbef53ab0e6d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#aea042206805d3f6a03bfbbef53ab0e6d">getGridResolution</a> (int &amp;res_x, int &amp;res_y, int &amp;res_z)</td></tr>
<tr class="memdesc:aea042206805d3f6a03bfbbef53ab0e6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method to get the marching cubes grid resolution.  <a href="classpcl_1_1_marching_cubes.html#aea042206805d3f6a03bfbbef53ab0e6d">更多...</a><br /></td></tr>
<tr class="separator:aea042206805d3f6a03bfbbef53ab0e6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c84675b01ac7e3dfd1282d2ff6bf822"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a4c84675b01ac7e3dfd1282d2ff6bf822">setPercentageExtendGrid</a> (float percentage)</td></tr>
<tr class="memdesc:a4c84675b01ac7e3dfd1282d2ff6bf822"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method that sets the parameter that defines how much free space should be left inside the grid between the bounding box of the point cloud and the grid limits. Does not affect the resolution of the grid, it just changes the voxel size accordingly.  <a href="classpcl_1_1_marching_cubes.html#a4c84675b01ac7e3dfd1282d2ff6bf822">更多...</a><br /></td></tr>
<tr class="separator:a4c84675b01ac7e3dfd1282d2ff6bf822"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1763c8a089cd10977e58f389291757f6"><td class="memItemLeft" align="right" valign="top"><a id="a1763c8a089cd10977e58f389291757f6"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a1763c8a089cd10977e58f389291757f6">getPercentageExtendGrid</a> ()</td></tr>
<tr class="memdesc:a1763c8a089cd10977e58f389291757f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method that gets the parameter that defines how much free space should be left inside the grid between the bounding box of the point cloud and the grid limits, as a percentage of the bounding box. <br /></td></tr>
<tr class="separator:a1763c8a089cd10977e58f389291757f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_surface_reconstruction"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_surface_reconstruction')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_surface_reconstruction.html">pcl::SurfaceReconstruction&lt; PointNT &gt;</a></td></tr>
<tr class="memitem:a62586eb3779c4f30358cbc5610f45704 inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="memItemLeft" align="right" valign="top"><a id="a62586eb3779c4f30358cbc5610f45704"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_surface_reconstruction.html#a62586eb3779c4f30358cbc5610f45704">SurfaceReconstruction</a> ()</td></tr>
<tr class="memdesc:a62586eb3779c4f30358cbc5610f45704 inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:a62586eb3779c4f30358cbc5610f45704 inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ff44d59d17234e00a4c2fc94af0a79f inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="memItemLeft" align="right" valign="top"><a id="a5ff44d59d17234e00a4c2fc94af0a79f"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_surface_reconstruction.html#a5ff44d59d17234e00a4c2fc94af0a79f">~SurfaceReconstruction</a> ()</td></tr>
<tr class="memdesc:a5ff44d59d17234e00a4c2fc94af0a79f inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a5ff44d59d17234e00a4c2fc94af0a79f inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0186afbd6d85006cc7165a59273a788 inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_surface_reconstruction.html#af0186afbd6d85006cc7165a59273a788">reconstruct</a> (<a class="el" href="structpcl_1_1_polygon_mesh.html">pcl::PolygonMesh</a> &amp;output)</td></tr>
<tr class="memdesc:af0186afbd6d85006cc7165a59273a788 inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base method for surface reconstruction for all points given in &lt;setInputCloud (), setIndices ()&gt;  <a href="classpcl_1_1_surface_reconstruction.html#af0186afbd6d85006cc7165a59273a788">更多...</a><br /></td></tr>
<tr class="separator:af0186afbd6d85006cc7165a59273a788 inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaec1dc0c87b4f8bacaa46ef0899a69f7 inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_surface_reconstruction.html#aaec1dc0c87b4f8bacaa46ef0899a69f7">reconstruct</a> (<a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointNT &gt; &amp;points, std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;polygons)</td></tr>
<tr class="memdesc:aaec1dc0c87b4f8bacaa46ef0899a69f7 inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base method for surface reconstruction for all points given in &lt;setInputCloud (), setIndices ()&gt;  <a href="classpcl_1_1_surface_reconstruction.html#aaec1dc0c87b4f8bacaa46ef0899a69f7">更多...</a><br /></td></tr>
<tr class="separator:aaec1dc0c87b4f8bacaa46ef0899a69f7 inherit pub_methods_classpcl_1_1_surface_reconstruction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_surface_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_surface_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_surface_base.html">pcl::PCLSurfaceBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:aa4fba20611b3e995b9cc07dac528e4c3 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="aa4fba20611b3e995b9cc07dac528e4c3"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_surface_base.html#aa4fba20611b3e995b9cc07dac528e4c3">PCLSurfaceBase</a> ()</td></tr>
<tr class="memdesc:aa4fba20611b3e995b9cc07dac528e4c3 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:aa4fba20611b3e995b9cc07dac528e4c3 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a264840d7b5cf8d1e7e6b3c96e9920c9f inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a264840d7b5cf8d1e7e6b3c96e9920c9f"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_surface_base.html#a264840d7b5cf8d1e7e6b3c96e9920c9f">~PCLSurfaceBase</a> ()</td></tr>
<tr class="memdesc:a264840d7b5cf8d1e7e6b3c96e9920c9f inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty destructor <br /></td></tr>
<tr class="separator:a264840d7b5cf8d1e7e6b3c96e9920c9f inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af599c9767a18649344ff21d3976f1779 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_surface_base.html#af599c9767a18649344ff21d3976f1779">setSearchMethod</a> (const KdTreePtr &amp;tree)</td></tr>
<tr class="memdesc:af599c9767a18649344ff21d3976f1779 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide an optional pointer to a search object.  <a href="classpcl_1_1_p_c_l_surface_base.html#af599c9767a18649344ff21d3976f1779">更多...</a><br /></td></tr>
<tr class="separator:af599c9767a18649344ff21d3976f1779 inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2249d44038e0869bbf60e486ab3826af inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a2249d44038e0869bbf60e486ab3826af"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_surface_base.html#a2249d44038e0869bbf60e486ab3826af">getSearchMethod</a> ()</td></tr>
<tr class="memdesc:a2249d44038e0869bbf60e486ab3826af inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the search method used. <br /></td></tr>
<tr class="separator:a2249d44038e0869bbf60e486ab3826af inherit pub_methods_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="af4fbc5eb005057f8a0fc6d60bde595df"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af4fbc5eb005057f8a0fc6d60bde595df">PCLBase</a> ()</td></tr>
<tr class="memdesc:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a7a6dd7a91275d7737cf1b18005b47244"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a7a6dd7a91275d7737cf1b18005b47244">PCLBase</a> (const <a class="el" href="classpcl_1_1_p_c_l_base.html">PCLBase</a> &amp;base)</td></tr>
<tr class="memdesc:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ad5d6846e98e59c37dcc3dc9958d53966"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ad5d6846e98e59c37dcc3dc9958d53966">~PCLBase</a> ()</td></tr>
<tr class="memdesc:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">setInputCloud</a> (const PointCloudConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input dataset  <a href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">更多...</a><br /></td></tr>
<tr class="separator:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a8cd745c4f7a792212f4fc3720b9d46ea"></a>
PointCloudConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a8cd745c4f7a792212f4fc3720b9d46ea">getInputCloud</a> () const</td></tr>
<tr class="memdesc:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">setIndices</a> (const IndicesPtr &amp;indices)</td></tr>
<tr class="memdesc:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">更多...</a><br /></td></tr>
<tr class="separator:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">setIndices</a> (const IndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">更多...</a><br /></td></tr>
<tr class="separator:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">setIndices</a> (const PointIndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">更多...</a><br /></td></tr>
<tr class="separator:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">setIndices</a> (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)</td></tr>
<tr class="memdesc:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the indices for the points laying within an interest region of the point cloud.  <a href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">更多...</a><br /></td></tr>
<tr class="separator:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a058753dd4de73d3d0062fe2e452fba3c"></a>
IndicesPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a058753dd4de73d3d0062fe2e452fba3c">getIndices</a> ()</td></tr>
<tr class="memdesc:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="acae187b37230758959572ceb1e6e2045"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acae187b37230758959572ceb1e6e2045">getIndices</a> () const</td></tr>
<tr class="memdesc:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">const PointInT &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">operator[]</a> (size_t pos) const</td></tr>
<tr class="memdesc:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override PointCloud operator[] to shorten code  <a href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">更多...</a><br /></td></tr>
<tr class="separator:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a5f7430b8dfd6eecd480525959eb6c669"><td class="memItemLeft" align="right" valign="top"><a id="a5f7430b8dfd6eecd480525959eb6c669"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a5f7430b8dfd6eecd480525959eb6c669">voxelizeData</a> ()=0</td></tr>
<tr class="memdesc:a5f7430b8dfd6eecd480525959eb6c669"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert the point cloud into voxel data. <br /></td></tr>
<tr class="separator:a5f7430b8dfd6eecd480525959eb6c669"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafe0e216b2da0d7645f7d1ba5fff8b2c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (Eigen::Vector3f &amp;p1, Eigen::Vector3f &amp;p2, float val_p1, float val_p2, Eigen::Vector3f &amp;output)</td></tr>
<tr class="memdesc:aafe0e216b2da0d7645f7d1ba5fff8b2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interpolate along the voxel edge.  <a href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">更多...</a><br /></td></tr>
<tr class="separator:aafe0e216b2da0d7645f7d1ba5fff8b2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6931544f9b8fb7acc41119134dd57f9a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a6931544f9b8fb7acc41119134dd57f9a">createSurface</a> (std::vector&lt; float &gt; &amp;leaf_node, Eigen::Vector3i &amp;index_3d, <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointNT &gt; &amp;cloud)</td></tr>
<tr class="memdesc:a6931544f9b8fb7acc41119134dd57f9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate out the corresponding polygons in the leaf node  <a href="classpcl_1_1_marching_cubes.html#a6931544f9b8fb7acc41119134dd57f9a">更多...</a><br /></td></tr>
<tr class="separator:a6931544f9b8fb7acc41119134dd57f9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9be29d409a9f84b6b5c15dde60ade1a0"><td class="memItemLeft" align="right" valign="top"><a id="a9be29d409a9f84b6b5c15dde60ade1a0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a9be29d409a9f84b6b5c15dde60ade1a0">getBoundingBox</a> ()</td></tr>
<tr class="memdesc:a9be29d409a9f84b6b5c15dde60ade1a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the bounding box for the input data points. <br /></td></tr>
<tr class="separator:a9be29d409a9f84b6b5c15dde60ade1a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a869ec9eeb1ec0543ab3ea67cb27fbfc9"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">getGridValue</a> (Eigen::Vector3i pos)</td></tr>
<tr class="memdesc:a869ec9eeb1ec0543ab3ea67cb27fbfc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method that returns the scalar value at the given grid position.  <a href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">更多...</a><br /></td></tr>
<tr class="separator:a869ec9eeb1ec0543ab3ea67cb27fbfc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee54b8224b31fad1671cec5c276d35cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#aee54b8224b31fad1671cec5c276d35cd">getNeighborList1D</a> (std::vector&lt; float &gt; &amp;leaf, Eigen::Vector3i &amp;index3d)</td></tr>
<tr class="memdesc:aee54b8224b31fad1671cec5c276d35cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method that returns the scalar values of the neighbors of a given 3D position in the grid.  <a href="classpcl_1_1_marching_cubes.html#aee54b8224b31fad1671cec5c276d35cd">更多...</a><br /></td></tr>
<tr class="separator:aee54b8224b31fad1671cec5c276d35cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8444e62030bb73343ebcb74dfe1ddeb"><td class="memItemLeft" align="right" valign="top"><a id="ac8444e62030bb73343ebcb74dfe1ddeb"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#ac8444e62030bb73343ebcb74dfe1ddeb">getClassName</a> () const</td></tr>
<tr class="memdesc:ac8444e62030bb73343ebcb74dfe1ddeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class get name method. <br /></td></tr>
<tr class="separator:ac8444e62030bb73343ebcb74dfe1ddeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f9be8dba860549426fe3fbac21c453c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a8f9be8dba860549426fe3fbac21c453c">performReconstruction</a> (<a class="el" href="structpcl_1_1_polygon_mesh.html">pcl::PolygonMesh</a> &amp;output)</td></tr>
<tr class="memdesc:a8f9be8dba860549426fe3fbac21c453c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extract the surface.  <a href="classpcl_1_1_marching_cubes.html#a8f9be8dba860549426fe3fbac21c453c">更多...</a><br /></td></tr>
<tr class="separator:a8f9be8dba860549426fe3fbac21c453c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dfd91eba77209ce1f1e67d2571aa14d"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a9dfd91eba77209ce1f1e67d2571aa14d">performReconstruction</a> (<a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointNT &gt; &amp;points, std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;polygons)</td></tr>
<tr class="memdesc:a9dfd91eba77209ce1f1e67d2571aa14d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extract the surface.  <a href="classpcl_1_1_marching_cubes.html#a9dfd91eba77209ce1f1e67d2571aa14d">更多...</a><br /></td></tr>
<tr class="separator:a9dfd91eba77209ce1f1e67d2571aa14d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ()</td></tr>
<tr class="memdesc:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called before starting the actual computation.  <a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">更多...</a><br /></td></tr>
<tr class="separator:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="afc426c4eebb94b7734d4fa556bff1420"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ()</td></tr>
<tr class="memdesc:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called after finishing the actual computation. <br /></td></tr>
<tr class="separator:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a1fe3ace141259294aa47489cf0d8a83c"><td class="memItemLeft" align="right" valign="top"><a id="a1fe3ace141259294aa47489cf0d8a83c"></a>
std::vector&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a1fe3ace141259294aa47489cf0d8a83c">grid_</a></td></tr>
<tr class="memdesc:a1fe3ace141259294aa47489cf0d8a83c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The data structure storing the 3D grid <br /></td></tr>
<tr class="separator:a1fe3ace141259294aa47489cf0d8a83c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a206a6bc55b35bc64c27179c1a303e4d1"><td class="memItemLeft" align="right" valign="top"><a id="a206a6bc55b35bc64c27179c1a303e4d1"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">res_x_</a></td></tr>
<tr class="memdesc:a206a6bc55b35bc64c27179c1a303e4d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">The grid resolution <br /></td></tr>
<tr class="separator:a206a6bc55b35bc64c27179c1a303e4d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9554a259acd2469adc16ae36244215fc"><td class="memItemLeft" align="right" valign="top"><a id="a9554a259acd2469adc16ae36244215fc"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>res_y_</b></td></tr>
<tr class="separator:a9554a259acd2469adc16ae36244215fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac45e5686ebb864addfcbad1ee60cf362"><td class="memItemLeft" align="right" valign="top"><a id="ac45e5686ebb864addfcbad1ee60cf362"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>res_z_</b></td></tr>
<tr class="separator:ac45e5686ebb864addfcbad1ee60cf362"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd84544d5740431753c9ce51d22be89c"><td class="memItemLeft" align="right" valign="top"><a id="abd84544d5740431753c9ce51d22be89c"></a>
Eigen::Vector4f&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">min_p_</a></td></tr>
<tr class="memdesc:abd84544d5740431753c9ce51d22be89c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Min and max data points. <br /></td></tr>
<tr class="separator:abd84544d5740431753c9ce51d22be89c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3eabff83a700b702c9c50aed0e55d621"><td class="memItemLeft" align="right" valign="top"><a id="a3eabff83a700b702c9c50aed0e55d621"></a>
Eigen::Vector4f&#160;</td><td class="memItemRight" valign="bottom"><b>max_p_</b></td></tr>
<tr class="separator:a3eabff83a700b702c9c50aed0e55d621"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a939a63ca1f45d1845526672b2de31b69"><td class="memItemLeft" align="right" valign="top"><a id="a939a63ca1f45d1845526672b2de31b69"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a939a63ca1f45d1845526672b2de31b69">percentage_extend_grid_</a></td></tr>
<tr class="memdesc:a939a63ca1f45d1845526672b2de31b69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameter that defines how much free space should be left inside the grid between the bounding box of the point cloud and the grid limits, as a percentage of the bounding box. <br /></td></tr>
<tr class="separator:a939a63ca1f45d1845526672b2de31b69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68c8035d359bd6f6716be4b62e199c5c"><td class="memItemLeft" align="right" valign="top"><a id="a68c8035d359bd6f6716be4b62e199c5c"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a></td></tr>
<tr class="memdesc:a68c8035d359bd6f6716be4b62e199c5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The iso level to be extracted. <br /></td></tr>
<tr class="separator:a68c8035d359bd6f6716be4b62e199c5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_surface_reconstruction"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_surface_reconstruction')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_surface_reconstruction.html">pcl::SurfaceReconstruction&lt; PointNT &gt;</a></td></tr>
<tr class="memitem:a28e8c20a22904c2b368e36f5fcc841b1 inherit pro_attribs_classpcl_1_1_surface_reconstruction"><td class="memItemLeft" align="right" valign="top"><a id="a28e8c20a22904c2b368e36f5fcc841b1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_surface_reconstruction.html#a28e8c20a22904c2b368e36f5fcc841b1">check_tree_</a></td></tr>
<tr class="memdesc:a28e8c20a22904c2b368e36f5fcc841b1 inherit pro_attribs_classpcl_1_1_surface_reconstruction"><td class="mdescLeft">&#160;</td><td class="mdescRight">A flag specifying whether or not the derived reconstruction algorithm needs the search object <em>tree</em>. <br /></td></tr>
<tr class="separator:a28e8c20a22904c2b368e36f5fcc841b1 inherit pro_attribs_classpcl_1_1_surface_reconstruction"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_surface_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_surface_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_surface_base.html">pcl::PCLSurfaceBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:a28d2f448602636061ef7d716e0f6e930 inherit pro_attribs_classpcl_1_1_p_c_l_surface_base"><td class="memItemLeft" align="right" valign="top"><a id="a28d2f448602636061ef7d716e0f6e930"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_surface_base.html#a28d2f448602636061ef7d716e0f6e930">tree_</a></td></tr>
<tr class="memdesc:a28d2f448602636061ef7d716e0f6e930 inherit pro_attribs_classpcl_1_1_p_c_l_surface_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the spatial search object. <br /></td></tr>
<tr class="separator:a28d2f448602636061ef7d716e0f6e930 inherit pro_attribs_classpcl_1_1_p_c_l_surface_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a09c70d8e06e3fb4f07903fe6f8d67869"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a></td></tr>
<tr class="memdesc:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset. <br /></td></tr>
<tr class="separator:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="aaee847c8a517ebf365bad2cb182a6626"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a></td></tr>
<tr class="memdesc:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ada1eadb824d34ca9206a86343d9760bb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ada1eadb824d34ca9206a86343d9760bb">use_indices_</a></td></tr>
<tr class="memdesc:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if point indices are used. <br /></td></tr>
<tr class="separator:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="adadb0299f144528020ed558af6879662"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a></td></tr>
<tr class="memdesc:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud. <br /></td></tr>
<tr class="separator:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointNT&gt;<br />
class pcl::MarchingCubes&lt; PointNT &gt;</h3>

<p>The marching cubes surface reconstruction algorithm. This is an abstract class that takes a grid and extracts the isosurface as a mesh, based on the original marching cubes paper: </p>
<p>Lorensen W.E., Cline H.E., "Marching cubes: A high resolution 3d surface construction algorithm", SIGGRAPH '87</p>
<dl class="section author"><dt>作者</dt><dd>Alexandru E. Ichim </dd></dl>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="a6931544f9b8fb7acc41119134dd57f9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6931544f9b8fb7acc41119134dd57f9a">&#9670;&nbsp;</a></span>createSurface()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_marching_cubes.html">pcl::MarchingCubes</a>&lt; PointNT &gt;::createSurface </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>leaf_node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3i &amp;&#160;</td>
          <td class="paramname"><em>index_3d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointNT &gt; &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Calculate out the corresponding polygons in the leaf node </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">leaf_node</td><td>the leaf node to be checked </td></tr>
    <tr><td class="paramname">index_3d</td><td>the 3d index of the leaf node to be checked </td></tr>
    <tr><td class="paramname">cloud</td><td>point cloud to store the vertices of the polygon </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;{</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  <span class="keywordtype">int</span> cubeindex = 0;</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  Eigen::Vector3f vertex_list[12];</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <span class="keywordflow">if</span> (leaf_node[0] &lt; <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a>) cubeindex |= 1;</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="keywordflow">if</span> (leaf_node[1] &lt; <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a>) cubeindex |= 2;</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <span class="keywordflow">if</span> (leaf_node[2] &lt; <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a>) cubeindex |= 4;</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <span class="keywordflow">if</span> (leaf_node[3] &lt; <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a>) cubeindex |= 8;</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="keywordflow">if</span> (leaf_node[4] &lt; <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a>) cubeindex |= 16;</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <span class="keywordflow">if</span> (leaf_node[5] &lt; <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a>) cubeindex |= 32;</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keywordflow">if</span> (leaf_node[6] &lt; <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a>) cubeindex |= 64;</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="keywordflow">if</span> (leaf_node[7] &lt; <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a>) cubeindex |= 128;</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="comment">// Cube is entirely in/out of the surface</span></div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] == 0)</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160; </div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <span class="comment">//Eigen::Vector4f index_3df (index_3d[0], index_3d[1], index_3d[2], 0.0f);</span></div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  Eigen::Vector3f center;<span class="comment">// TODO coeff wise product = min_p_ + Eigen::Vector4f (1.0f/res_x_, 1.0f/res_y_, 1.0f/res_z_) * index_3df * (max_p_ - min_p_);</span></div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  center[0] = <a class="code" href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">min_p_</a>[0] + (max_p_[0] - <a class="code" href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">min_p_</a>[0]) * <span class="keywordtype">float</span> (index_3d[0]) / float (<a class="code" href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">res_x_</a>);</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  center[1] = <a class="code" href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">min_p_</a>[1] + (max_p_[1] - <a class="code" href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">min_p_</a>[1]) * <span class="keywordtype">float</span> (index_3d[1]) / float (res_y_);</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  center[2] = <a class="code" href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">min_p_</a>[2] + (max_p_[2] - <a class="code" href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">min_p_</a>[2]) * <span class="keywordtype">float</span> (index_3d[2]) / float (res_z_);</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  std::vector&lt;Eigen::Vector3f, Eigen::aligned_allocator&lt;Eigen::Vector3f&gt; &gt; p;</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  p.resize (8);</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 8; ++i)</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  {</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    Eigen::Vector3f point = center;</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="keywordflow">if</span>(i &amp; 0x4)</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;      point[1] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (center[1] + (max_p_[1] - <a class="code" href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">min_p_</a>[1]) / <span class="keywordtype">float</span> (res_y_));</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="keywordflow">if</span>(i &amp; 0x2)</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      point[2] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (center[2] + (max_p_[2] - <a class="code" href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">min_p_</a>[2]) / <span class="keywordtype">float</span> (res_z_));</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keywordflow">if</span>((i &amp; 0x1) ^ ((i &gt;&gt; 1) &amp; 0x1))</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      point[0] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (center[0] + (max_p_[0] - <a class="code" href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">min_p_</a>[0]) / float (<a class="code" href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">res_x_</a>));</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    p[i] = point;</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  }</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160; </div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160; </div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">// Find the vertices where the surface intersects the cube</span></div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 1)</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[0], p[1], leaf_node[0], leaf_node[1], vertex_list[0]);</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 2)</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[1], p[2], leaf_node[1], leaf_node[2], vertex_list[1]);</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 4)</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[2], p[3], leaf_node[2], leaf_node[3], vertex_list[2]);</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 8)</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[3], p[0], leaf_node[3], leaf_node[0], vertex_list[3]);</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 16)</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[4], p[5], leaf_node[4], leaf_node[5], vertex_list[4]);</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 32)</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[5], p[6], leaf_node[5], leaf_node[6], vertex_list[5]);</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 64)</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[6], p[7], leaf_node[6], leaf_node[7], vertex_list[6]);</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 128)</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[7], p[4], leaf_node[7], leaf_node[4], vertex_list[7]);</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 256)</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[0], p[4], leaf_node[0], leaf_node[4], vertex_list[8]);</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 512)</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[1], p[5], leaf_node[1], leaf_node[5], vertex_list[9]);</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 1024)</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[2], p[6], leaf_node[2], leaf_node[6], vertex_list[10]);</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  <span class="keywordflow">if</span> (edgeTable[cubeindex] &amp; 2048)</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <a class="code" href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">interpolateEdge</a> (p[3], p[7], leaf_node[3], leaf_node[7], vertex_list[11]);</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160; </div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <span class="comment">// Create the triangle</span></div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; triTable[cubeindex][i] != -1; i+=3)</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  {</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    PointNT p1,p2,p3;</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    p1.x = vertex_list[triTable[cubeindex][i  ]][0];</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    p1.y = vertex_list[triTable[cubeindex][i  ]][1];</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    p1.z = vertex_list[triTable[cubeindex][i  ]][2];</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a0b4d7abee110e47d90635eb042488bb4">push_back</a> (p1);</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    p2.x = vertex_list[triTable[cubeindex][i+1]][0];</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    p2.y = vertex_list[triTable[cubeindex][i+1]][1];</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    p2.z = vertex_list[triTable[cubeindex][i+1]][2];</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a0b4d7abee110e47d90635eb042488bb4">push_back</a> (p2);</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    p3.x = vertex_list[triTable[cubeindex][i+2]][0];</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    p3.y = vertex_list[triTable[cubeindex][i+2]][1];</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    p3.z = vertex_list[triTable[cubeindex][i+2]][2];</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a0b4d7abee110e47d90635eb042488bb4">push_back</a> (p3);</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  }</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_a206a6bc55b35bc64c27179c1a303e4d1"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">pcl::MarchingCubes::res_x_</a></div><div class="ttdeci">int res_x_</div><div class="ttdoc">The grid resolution</div><div class="ttdef"><b>Definition:</b> marching_cubes.h:438</div></div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_a68c8035d359bd6f6716be4b62e199c5c"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">pcl::MarchingCubes::iso_level_</a></div><div class="ttdeci">float iso_level_</div><div class="ttdoc">The iso level to be extracted.</div><div class="ttdef"><b>Definition:</b> marching_cubes.h:448</div></div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_aafe0e216b2da0d7645f7d1ba5fff8b2c"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#aafe0e216b2da0d7645f7d1ba5fff8b2c">pcl::MarchingCubes::interpolateEdge</a></div><div class="ttdeci">void interpolateEdge(Eigen::Vector3f &amp;p1, Eigen::Vector3f &amp;p2, float val_p1, float val_p2, Eigen::Vector3f &amp;output)</div><div class="ttdoc">Interpolate along the voxel edge.</div><div class="ttdef"><b>Definition:</b> marching_cubes.hpp:87</div></div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_abd84544d5740431753c9ce51d22be89c"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#abd84544d5740431753c9ce51d22be89c">pcl::MarchingCubes::min_p_</a></div><div class="ttdeci">Eigen::Vector4f min_p_</div><div class="ttdoc">Min and max data points.</div><div class="ttdef"><b>Definition:</b> marching_cubes.h:441</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a0b4d7abee110e47d90635eb042488bb4"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a0b4d7abee110e47d90635eb042488bb4">pcl::PointCloud::push_back</a></div><div class="ttdeci">void push_back(const PointT &amp;pt)</div><div class="ttdoc">Insert a new point in the cloud, at the end of the container.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:480</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aea042206805d3f6a03bfbbef53ab0e6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea042206805d3f6a03bfbbef53ab0e6d">&#9670;&nbsp;</a></span>getGridResolution()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_marching_cubes.html">pcl::MarchingCubes</a>&lt; PointNT &gt;::getGridResolution </td>
          <td>(</td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>res_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>res_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>res_z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Method to get the marching cubes grid resolution. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">res_x</td><td>the resolution of the grid along the x-axis </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">res_y</td><td>the resolution of the grid along the y-axis </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">res_z</td><td>the resolution of the grid along the z-axis </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;      { res_x = <a class="code" href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">res_x_</a>; res_y = res_y_; res_z = res_z_; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a869ec9eeb1ec0543ab3ea67cb27fbfc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a869ec9eeb1ec0543ab3ea67cb27fbfc9">&#9670;&nbsp;</a></span>getGridValue()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float <a class="el" href="classpcl_1_1_marching_cubes.html">pcl::MarchingCubes</a>&lt; PointNT &gt;::getGridValue </td>
          <td>(</td>
          <td class="paramtype">Eigen::Vector3i&#160;</td>
          <td class="paramname"><em>pos</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Method that returns the scalar value at the given grid position. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pos</td><td>The 3D position in the grid </td></tr>
  </table>
  </dd>
</dl>
<p>TODO what to return?</p>
<div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;{</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="keywordflow">if</span> (pos[0] &lt; 0 || pos[0] &gt;= <a class="code" href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">res_x_</a>)</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keywordflow">return</span> -1.0f;</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <span class="keywordflow">if</span> (pos[1] &lt; 0 || pos[1] &gt;= res_y_)</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="keywordflow">return</span> -1.0f;</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="keywordflow">if</span> (pos[2] &lt; 0 || pos[2] &gt;= res_z_)</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="keywordflow">return</span> -1.0f;</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="keywordflow">return</span> <a class="code" href="classpcl_1_1_marching_cubes.html#a1fe3ace141259294aa47489cf0d8a83c">grid_</a>[pos[0]*res_y_*res_z_ + pos[1]*res_z_ + pos[2]];</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_a1fe3ace141259294aa47489cf0d8a83c"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#a1fe3ace141259294aa47489cf0d8a83c">pcl::MarchingCubes::grid_</a></div><div class="ttdeci">std::vector&lt; float &gt; grid_</div><div class="ttdoc">The data structure storing the 3D grid</div><div class="ttdef"><b>Definition:</b> marching_cubes.h:435</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aee54b8224b31fad1671cec5c276d35cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee54b8224b31fad1671cec5c276d35cd">&#9670;&nbsp;</a></span>getNeighborList1D()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_marching_cubes.html">pcl::MarchingCubes</a>&lt; PointNT &gt;::getNeighborList1D </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>leaf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3i &amp;&#160;</td>
          <td class="paramname"><em>index3d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Method that returns the scalar values of the neighbors of a given 3D position in the grid. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index3d</td><td>the point in the grid </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">leaf</td><td>the set of values </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;{</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  leaf = std::vector&lt;float&gt; (8, 0.0f);</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160; </div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;  leaf[0] = <a class="code" href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">getGridValue</a> (index3d);</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  leaf[1] = <a class="code" href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">getGridValue</a> (index3d + Eigen::Vector3i (1, 0, 0));</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  leaf[2] = <a class="code" href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">getGridValue</a> (index3d + Eigen::Vector3i (1, 0, 1));</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  leaf[3] = <a class="code" href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">getGridValue</a> (index3d + Eigen::Vector3i (0, 0, 1));</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  leaf[4] = <a class="code" href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">getGridValue</a> (index3d + Eigen::Vector3i (0, 1, 0));</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  leaf[5] = <a class="code" href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">getGridValue</a> (index3d + Eigen::Vector3i (1, 1, 0));</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  leaf[6] = <a class="code" href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">getGridValue</a> (index3d + Eigen::Vector3i (1, 1, 1));</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  leaf[7] = <a class="code" href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">getGridValue</a> (index3d + Eigen::Vector3i (0, 1, 1));</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_a869ec9eeb1ec0543ab3ea67cb27fbfc9"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#a869ec9eeb1ec0543ab3ea67cb27fbfc9">pcl::MarchingCubes::getGridValue</a></div><div class="ttdeci">virtual float getGridValue(Eigen::Vector3i pos)</div><div class="ttdoc">Method that returns the scalar value at the given grid position.</div><div class="ttdef"><b>Definition:</b> marching_cubes.hpp:209</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aafe0e216b2da0d7645f7d1ba5fff8b2c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafe0e216b2da0d7645f7d1ba5fff8b2c">&#9670;&nbsp;</a></span>interpolateEdge()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_marching_cubes.html">pcl::MarchingCubes</a>&lt; PointNT &gt;::interpolateEdge </td>
          <td>(</td>
          <td class="paramtype">Eigen::Vector3f &amp;&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3f &amp;&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>val_p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>val_p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3f &amp;&#160;</td>
          <td class="paramname"><em>output</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Interpolate along the voxel edge. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p1</td><td>The first point on the edge </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p2</td><td>The second point on the edge </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">val_p1</td><td>The scalar value at p1 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">val_p2</td><td>The scalar value at p2 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>The interpolated point along the edge </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;{</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="keywordtype">float</span> mu = (<a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a> - val_p1) / (val_p2-val_p1);</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  output = p1 + mu * (p2 - p1);</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a9dfd91eba77209ce1f1e67d2571aa14d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9dfd91eba77209ce1f1e67d2571aa14d">&#9670;&nbsp;</a></span>performReconstruction() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_marching_cubes.html">pcl::MarchingCubes</a>&lt; PointNT &gt;::performReconstruction </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointNT &gt; &amp;&#160;</td>
          <td class="paramname"><em>points</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="structpcl_1_1_vertices.html">pcl::Vertices</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>polygons</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Extract the surface. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">points</td><td>the points of the extracted mesh </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">polygons</td><td>the connectivity between the point of the extracted mesh. </td></tr>
  </table>
  </dd>
</dl>

<p>实现了 <a class="el" href="classpcl_1_1_surface_reconstruction.html#adb79f4f50df09a4b8364a7a9f1920e7a">pcl::SurfaceReconstruction&lt; PointNT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;{</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  <span class="keywordflow">if</span> (!(<a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a> &gt;= 0 &amp;&amp; <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a> &lt; 1))</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  {</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::%s::performReconstruction] Invalid iso level %f! Please use a number between 0 and 1.\n&quot;</span>, <a class="code" href="classpcl_1_1_marching_cubes.html#ac8444e62030bb73343ebcb74dfe1ddeb">getClassName</a> ().c_str (), <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a>);</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    points.<a class="code" href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">width</a> = points.<a class="code" href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">height</a> = 0;</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    points.<a class="code" href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">points</a>.clear ();</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    polygons.clear ();</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;  }</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160; </div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;  <span class="comment">// Create grid</span></div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  <a class="code" href="classpcl_1_1_marching_cubes.html#a1fe3ace141259294aa47489cf0d8a83c">grid_</a> = std::vector&lt;float&gt; (<a class="code" href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">res_x_</a>*res_y_*res_z_, 0.0f);</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160; </div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  <span class="comment">// Populate tree</span></div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  <a class="code" href="classpcl_1_1_p_c_l_surface_base.html#a28d2f448602636061ef7d716e0f6e930">tree_</a>-&gt;setInputCloud (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>);</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;  <a class="code" href="classpcl_1_1_marching_cubes.html#a9be29d409a9f84b6b5c15dde60ade1a0">getBoundingBox</a> ();</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160; </div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;  <span class="comment">// Transform the point cloud into a voxel grid</span></div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  <span class="comment">// This needs to be implemented in a child class</span></div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <a class="code" href="classpcl_1_1_marching_cubes.html#a5f7430b8dfd6eecd480525959eb6c669">voxelizeData</a> ();</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160; </div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <span class="comment">// Run the actual marching cubes algorithm, store it into a point cloud,</span></div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;  <span class="comment">// and copy the point cloud + connectivity into output</span></div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;  points.<a class="code" href="classpcl_1_1_point_cloud.html#a963c0da7320055c79e5af0df4f6ad224">clear</a> ();</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = 1; x &lt; <a class="code" href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">res_x_</a>-1; ++x)</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y = 1; y &lt; res_y_-1; ++y)</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> z = 1; z &lt; res_z_-1; ++z)</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;      {</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        Eigen::Vector3i index_3d (x, y, z);</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        std::vector&lt;float&gt; leaf_node;</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        <a class="code" href="classpcl_1_1_marching_cubes.html#aee54b8224b31fad1671cec5c276d35cd">getNeighborList1D</a> (leaf_node, index_3d);</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        <a class="code" href="classpcl_1_1_marching_cubes.html#a6931544f9b8fb7acc41119134dd57f9a">createSurface</a> (leaf_node, index_3d, points);</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;      }</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160; </div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  polygons.resize (points.size () / 3);</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; polygons.size (); ++i)</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;  {</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    <a class="code" href="structpcl_1_1_vertices.html">pcl::Vertices</a> v;</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    v.vertices.resize (3);</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; 3; ++j)</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;      v.vertices[j] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (i) * 3 + j;</div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    polygons[i] = v;</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  }</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_a5f7430b8dfd6eecd480525959eb6c669"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#a5f7430b8dfd6eecd480525959eb6c669">pcl::MarchingCubes::voxelizeData</a></div><div class="ttdeci">virtual void voxelizeData()=0</div><div class="ttdoc">Convert the point cloud into voxel data.</div></div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_a6931544f9b8fb7acc41119134dd57f9a"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#a6931544f9b8fb7acc41119134dd57f9a">pcl::MarchingCubes::createSurface</a></div><div class="ttdeci">void createSurface(std::vector&lt; float &gt; &amp;leaf_node, Eigen::Vector3i &amp;index_3d, pcl::PointCloud&lt; PointNT &gt; &amp;cloud)</div><div class="ttdoc">Calculate out the corresponding polygons in the leaf node</div><div class="ttdef"><b>Definition:</b> marching_cubes.hpp:100</div></div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_a9be29d409a9f84b6b5c15dde60ade1a0"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#a9be29d409a9f84b6b5c15dde60ade1a0">pcl::MarchingCubes::getBoundingBox</a></div><div class="ttdeci">void getBoundingBox()</div><div class="ttdoc">Get the bounding box for the input data points.</div><div class="ttdef"><b>Definition:</b> marching_cubes.hpp:60</div></div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_ac8444e62030bb73343ebcb74dfe1ddeb"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#ac8444e62030bb73343ebcb74dfe1ddeb">pcl::MarchingCubes::getClassName</a></div><div class="ttdeci">std::string getClassName() const</div><div class="ttdoc">Class get name method.</div><div class="ttdef"><b>Definition:</b> marching_cubes.h:495</div></div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_aee54b8224b31fad1671cec5c276d35cd"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#aee54b8224b31fad1671cec5c276d35cd">pcl::MarchingCubes::getNeighborList1D</a></div><div class="ttdeci">void getNeighborList1D(std::vector&lt; float &gt; &amp;leaf, Eigen::Vector3i &amp;index3d)</div><div class="ttdoc">Method that returns the scalar values of the neighbors of a given 3D position in the grid.</div><div class="ttdef"><b>Definition:</b> marching_cubes.hpp:191</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_a09c70d8e06e3fb4f07903fe6f8d67869"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">pcl::PCLBase&lt; PointInT &gt;::input_</a></div><div class="ttdeci">PointCloudConstPtr input_</div><div class="ttdoc">The input point cloud dataset.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:150</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_surface_base_html_a28d2f448602636061ef7d716e0f6e930"><div class="ttname"><a href="classpcl_1_1_p_c_l_surface_base.html#a28d2f448602636061ef7d716e0f6e930">pcl::PCLSurfaceBase::tree_</a></div><div class="ttdeci">KdTreePtr tree_</div><div class="ttdoc">A pointer to the spatial search object.</div><div class="ttdef"><b>Definition:</b> reconstruction.h:98</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a2185a6453f8ad905d7bdf7b45754a160"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a2185a6453f8ad905d7bdf7b45754a160">pcl::PointCloud::width</a></div><div class="ttdeci">uint32_t width</div><div class="ttdoc">The point cloud width (if organized as an image-structure).</div><div class="ttdef"><b>Definition:</b> point_cloud.h:413</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a4f34b45220c57f96607513ffad0d9582"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a4f34b45220c57f96607513ffad0d9582">pcl::PointCloud::height</a></div><div class="ttdeci">uint32_t height</div><div class="ttdoc">The point cloud height (if organized as an image-structure).</div><div class="ttdef"><b>Definition:</b> point_cloud.h:415</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a963c0da7320055c79e5af0df4f6ad224"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a963c0da7320055c79e5af0df4f6ad224">pcl::PointCloud::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Removes all points in a cloud and sets the width and height to 0.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:575</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_af16a62638198313b9c093127c492c884"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#af16a62638198313b9c093127c492c884">pcl::PointCloud::points</a></div><div class="ttdeci">std::vector&lt; PointT, Eigen::aligned_allocator&lt; PointT &gt; &gt; points</div><div class="ttdoc">The point data.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:410</div></div>
<div class="ttc" id="astructpcl_1_1_vertices_html"><div class="ttname"><a href="structpcl_1_1_vertices.html">pcl::Vertices</a></div><div class="ttdoc">Describes a set of vertices in a polygon mesh, by basically storing an array of indices.</div><div class="ttdef"><b>Definition:</b> Vertices.h:15</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8f9be8dba860549426fe3fbac21c453c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f9be8dba860549426fe3fbac21c453c">&#9670;&nbsp;</a></span>performReconstruction() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_marching_cubes.html">pcl::MarchingCubes</a>&lt; PointNT &gt;::performReconstruction </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structpcl_1_1_polygon_mesh.html">pcl::PolygonMesh</a> &amp;&#160;</td>
          <td class="paramname"><em>output</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Extract the surface. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>the resultant polygonal mesh </td></tr>
  </table>
  </dd>
</dl>

<p>实现了 <a class="el" href="classpcl_1_1_surface_reconstruction.html#a181cf1cc5feb909f5e8405bb82780cc1">pcl::SurfaceReconstruction&lt; PointNT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;{</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  <span class="keywordflow">if</span> (!(<a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a> &gt;= 0 &amp;&amp; <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a> &lt; 1))</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  {</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::%s::performReconstruction] Invalid iso level %f! Please use a number between 0 and 1.\n&quot;</span>, <a class="code" href="classpcl_1_1_marching_cubes.html#ac8444e62030bb73343ebcb74dfe1ddeb">getClassName</a> ().c_str (), <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a>);</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    output.cloud.width = output.cloud.height = 0;</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    output.cloud.data.clear ();</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    output.polygons.clear ();</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  }</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="comment">// Create grid</span></div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  <a class="code" href="classpcl_1_1_marching_cubes.html#a1fe3ace141259294aa47489cf0d8a83c">grid_</a> = std::vector&lt;float&gt; (<a class="code" href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">res_x_</a>*res_y_*res_z_, 0.0f);</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160; </div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="comment">// Populate tree</span></div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;  <a class="code" href="classpcl_1_1_p_c_l_surface_base.html#a28d2f448602636061ef7d716e0f6e930">tree_</a>-&gt;setInputCloud (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>);</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160; </div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <a class="code" href="classpcl_1_1_marching_cubes.html#a9be29d409a9f84b6b5c15dde60ade1a0">getBoundingBox</a> ();</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160; </div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="comment">// Transform the point cloud into a voxel grid</span></div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  <span class="comment">// This needs to be implemented in a child class</span></div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  <a class="code" href="classpcl_1_1_marching_cubes.html#a5f7430b8dfd6eecd480525959eb6c669">voxelizeData</a> ();</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160; </div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160; </div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  <span class="comment">// Run the actual marching cubes algorithm, store it into a point cloud,</span></div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="comment">// and copy the point cloud + connectivity into output</span></div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  <a class="code" href="classpcl_1_1_point_cloud.html">pcl::PointCloud&lt;PointNT&gt;</a> cloud;</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160; </div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = 1; x &lt; <a class="code" href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">res_x_</a>-1; ++x)</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y = 1; y &lt; res_y_-1; ++y)</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> z = 1; z &lt; res_z_-1; ++z)</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;      {</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        Eigen::Vector3i index_3d (x, y, z);</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        std::vector&lt;float&gt; leaf_node;</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        <a class="code" href="classpcl_1_1_marching_cubes.html#aee54b8224b31fad1671cec5c276d35cd">getNeighborList1D</a> (leaf_node, index_3d);</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;        <a class="code" href="classpcl_1_1_marching_cubes.html#a6931544f9b8fb7acc41119134dd57f9a">createSurface</a> (leaf_node, index_3d, cloud);</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;      }</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  pcl::toPCLPointCloud2 (cloud, output.cloud);</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160; </div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  output.polygons.resize (cloud.size () / 3);</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; output.polygons.size (); ++i)</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  {</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    <a class="code" href="structpcl_1_1_vertices.html">pcl::Vertices</a> v;</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    v.vertices.resize (3);</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; 3; ++j)</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;      v.vertices[j] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (i) * 3 + j;</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    output.polygons[i] = v;</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;  }</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html"><div class="ttname"><a href="classpcl_1_1_point_cloud.html">pcl::PointCloud&lt; PointNT &gt;</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa525f9b2f018d8b0011c943eefb9dcee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa525f9b2f018d8b0011c943eefb9dcee">&#9670;&nbsp;</a></span>setGridResolution()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_marching_cubes.html">pcl::MarchingCubes</a>&lt; PointNT &gt;::setGridResolution </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>res_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>res_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>res_z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Method that sets the marching cubes grid resolution. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">res_x</td><td>the resolution of the grid along the x-axis </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">res_y</td><td>the resolution of the grid along the y-axis </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">res_z</td><td>the resolution of the grid along the z-axis </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;      { <a class="code" href="classpcl_1_1_marching_cubes.html#a206a6bc55b35bc64c27179c1a303e4d1">res_x_</a> = res_x; res_y_ = res_y; res_z_ = res_z; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a64dba57c71a3c123f7d6038d0fdfa4eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64dba57c71a3c123f7d6038d0fdfa4eb">&#9670;&nbsp;</a></span>setIsoLevel()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_marching_cubes.html">pcl::MarchingCubes</a>&lt; PointNT &gt;::setIsoLevel </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>iso_level</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Method that sets the iso level of the surface to be extracted. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">iso_level</td><td>the iso level. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;      { <a class="code" href="classpcl_1_1_marching_cubes.html#a68c8035d359bd6f6716be4b62e199c5c">iso_level_</a> = iso_level; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a4c84675b01ac7e3dfd1282d2ff6bf822"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c84675b01ac7e3dfd1282d2ff6bf822">&#9670;&nbsp;</a></span>setPercentageExtendGrid()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_marching_cubes.html">pcl::MarchingCubes</a>&lt; PointNT &gt;::setPercentageExtendGrid </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>percentage</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Method that sets the parameter that defines how much free space should be left inside the grid between the bounding box of the point cloud and the grid limits. Does not affect the resolution of the grid, it just changes the voxel size accordingly. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">percentage</td><td>the percentage of the bounding box that should be left empty between the bounding box and the grid limits. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;      { <a class="code" href="classpcl_1_1_marching_cubes.html#a939a63ca1f45d1845526672b2de31b69">percentage_extend_grid_</a> = percentage; }</div>
<div class="ttc" id="aclasspcl_1_1_marching_cubes_html_a939a63ca1f45d1845526672b2de31b69"><div class="ttname"><a href="classpcl_1_1_marching_cubes.html#a939a63ca1f45d1845526672b2de31b69">pcl::MarchingCubes::percentage_extend_grid_</a></div><div class="ttdeci">float percentage_extend_grid_</div><div class="ttdoc">Parameter that defines how much free space should be left inside the grid between the bounding box of...</div><div class="ttdef"><b>Definition:</b> marching_cubes.h:445</div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>surface/include/pcl/surface/<a class="el" href="surface_2include_2pcl_2surface_2marching__cubes_8h_source.html">marching_cubes.h</a></li>
<li>surface/include/pcl/surface/impl/<a class="el" href="marching__cubes_8hpp_source.html">marching_cubes.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_marching_cubes.html">MarchingCubes</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
